package com.banmao.rabbitmq;

import com.banmao.rabbitmq.utils.RabbitUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;

// 消息生产者
@Slf4j
public class Producer {

    public static void main(String[] args) throws Exception {

        Connection conn = RabbitUtil.getConnection();

        // 创建通信通道
        // 相当于 TCP 中的虚拟连接，降低开销成本
        Channel channel = conn.createChannel();

        // 创建队列，声明并创建一个队列，如果队列已存在，则复用
        // 参数1：队列名称
        // 参数2：是否持久化数据
        // 参数3：是否队列私有化，false 表示所有消费者都可以访问，true 表示只有第一次拥有它的消费者才能一直使用
        // 参数4：是否自动删除队列
        // 参数5：其他额外参数
        channel.queueDeclare("helloWorld", false, false, false, null);

        for (int i = 0; i < 5; i++) {
            // 数据发送
            // 参数1：交换机，发布订阅时使用
            // 参数2：队列名称，与上面声明队列时保持一致
            // 参数3：额外的设置属性
            // 参数4：传递的数据消息字节数组
            String msg = "helloWorld this is RabbidMQ Producer" + new Date().toString() + "--" + i;
            channel.basicPublish("", "helloWorld", null, msg.getBytes());
        }

        // 关闭资源
        channel.close();
        conn.close();

        log.info("消息发送完成");
    }

}
